Houdiniメモ : CopyToPoints : らせん階段を作る
https://gyazo.com/15d6324077bd922e334c19848fdc545e
今回使うノード
・Circleノード
・Resampleノード
・Attribute Wrangle ノード
・PolyFrameノード
・Boxノード
・CopyToPointsノード
作り方
1. Circleノードでらせんのベースとなる円弧を作る
https://gyazo.com/1836f1b97cf22fc43306c19e2e021629
2. Resampleノードで円弧を等分する
https://gyazo.com/14f7fb93c5ba91fd7f201e821da393db
3. Attribute Wrangleで円弧を持ち上げる
code:move_P_y(python)
float t = float(@ptnum)/float(@numpt - 1); // (0~@numpt)を(0~1)に正規化(@ptnumはintなのでfloatにキャストしてます)
@P.y += chf("height") * t;
https://gyazo.com/ffcddfd7eb6a9a3e7dd6c7a0fce70d73
4. PolyFrameで接線を作成・Nアトリビュートとして保存
PolyFrameのTangentName を Nに設定すると、接線成分(ラインに沿うようなベクトル)が
Nアトリビュートとして保存されます。
https://gyazo.com/e471cc54f85afdef886e9fbb38846f4c
4画面分割でNアトリビュートを確認してみると、XZ平面に対してやや傾いていることが見て取れます。
https://gyazo.com/000f9ec6d3e671ef48dfbb22a7538f03
5. AttributeWrangleでNアトリビュートを水平にする
Nアトリビュートが傾いている状態だと都合が悪いので、NアトリビュートのY成分に0を入れ、Nアトリビュートを水平にします。
code:set_N_y_0(python)
@N.y = 0;
https://gyazo.com/ca959092a2acba48e073ccf669c0e3da
6. Boxノードで階段の板となるボックスを作成
https://gyazo.com/852afec4532c5df43ca3c4e5f939d9e7
7. CopyToPointsで板をコピーする(らせん階段の完成)
5.のAttributeWrangleと6.のBoxをCopyToPointsに接続して板を並べます。
https://gyazo.com/2dc5d94940b256e5c4e2b263a91b179b